package com.aoxiang.zbox.service;

import com.aoxiang.zbox.model.dto.CreateTodoItemRequest;
import com.aoxiang.zbox.model.dto.UpdateTodoItemRequest;
import com.aoxiang.zbox.model.entity.TodoItem;
import com.aoxiang.zbox.model.vo.GetDeletedVO;
import com.aoxiang.zbox.model.vo.LabelTodoItemVO;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * Description:
 *
 * @author: aoxiang
 * @create: 2025-03-08 20:19
 **/
public interface TodoItemService extends IService<TodoItem> {
    Long createTodoItem(CreateTodoItemRequest request);

    void removeTodoItem(Long id);

    void updateTodoItem(UpdateTodoItemRequest request);

    /**
     * 查询全部展示的待办
     *
     * @param
     * @return java.util.List<com.aoxiang.zbox.model.vo.ShownTodoItemVO>
     * @author aoxiang
     * @create 2025/3/9
     **/
    List<LabelTodoItemVO> getShownTodoItem();

    /**
     * 查询全部完成的待办
     *
     * @param
     * @return java.util.List<com.aoxiang.zbox.model.vo.ShownTodoItemVO>
     * @author aoxiang
     * @create 2025/3/9
     **/
    List<LabelTodoItemVO> getCompletedItem();

    /**
     * 查询被删除的待办
     *
     * @param
     * @return java.util.List<com.aoxiang.zbox.model.vo.GetDeletedVO>
     * @author aoxiang
     * @create 2025/3/9
     **/
    List<GetDeletedVO> getDeletedItem();

    /**
     * 恢复删除待办
     *
     * @param id
     * @return void
     * @author aoxiang
     * @create 2025/3/30
     **/
    TodoItem recoverTodoItem(Long id);

    /**
     * 物理删除待办
     *
     * @param ids
     * @return void
     * @author aoxiang
     * @create 2025/3/30
     **/
    void physicalDeletion(List<Long> ids);
}
